package com.sfac.springboot.listener;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
import java.io.File;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

/**
 * @Description LogListener
 * @Author JiangHu
 * @Date 2022/8/22 9:51
 */
@WebListener
public class LogListener implements ServletContextListener {

	private final static Logger LOGGER = LoggerFactory.getLogger(LogListener.class);

	@Override
	public void contextInitialized(ServletContextEvent sce) {
		LOGGER.debug("==== Init Log Listener ====");

		// 获取 /var/log 日志文件夹，判断是否存在，如果不存在直接返回
		File file = new File("/var/log");
		if (file == null) {
			return;
		}

		// 获取当前日期字符串
		DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
		String currentDateString = dtf.format(LocalDateTime.now());

		// 获取 /var/log 下日志文件列表，循环判断文件名称是否包含日期字符串，不包含则删除
		File[] files = file.listFiles();
		for (File temp : files) {
			String name = temp.getName();
			if (!name.contains(currentDateString)) {
				temp.delete();
			}
		}
	}

	@Override
	public void contextDestroyed(ServletContextEvent sce) {
		LOGGER.debug("==== Destroyed Log Listener ====");
	}
}
